知识点名称:光度计的实例 编号: K12-5 前驱知识点编号:K12-1,K12-2 作者: 讲义内容:
从光度计获取的数据只有一个,就是光线强度,下面是实例的完成步骤。
首先创建工程LightSensorTest,修改活动的布局代码activity_main.xml,如下所示:
```
<TextView
android:id="@+id/light_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp" />
</RelativeLayout>```
在这个布局中,使用了一个TextView来显示当前的光照强度,并让它在布局中居中显示。 接着修改MainActivity中的代码如下所示:
```public class MainActivity extends Activity {
private SensorManager sensorManager;
private TextView lightLevel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lightLevel = (TextView) findViewById(R.id.light_level);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(listener, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (sensorManager != null) {
sensorManager.unregisterListener(listener);
}
}
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// values数组中第一个下标的值就是当前的光照强度
float value = event.values[0];
lightLevel.setText("Current light level is " + value + " lx");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
}
然后运行程序,你将会在手机上看到当前环境下的光照强度,根据所处环境不同,显示的关照强度可能是几十到几百勒克斯。如果是强光照射手机,有可能达到上千勒克斯的光照强度,如图12.2所示。
图12.2 光度计的实例运行效果图